var request = require('request');
var fs = require('fs');

var provinceList = [
    '北京市',
     '天津市',
     '河北省',
     '山西省',
     '内蒙古自治区',
     '辽宁省',
     '吉林省',
     '黑龙江省',
     '上海市',
     '江苏省',
     '浙江省',
     '安徽省',
     '福建省',
     '江西省',
     '山东省',
     '河南省',
     '湖北省',
     '湖南省',
     '广东省',
     '广西壮族自治区',
     '海南省',
     '重庆市',
     '四川省',
     '贵州省',
     '云南省',
     '西藏自治区',
     '陕西省',
     '甘肃省',
     '青海省',
     '宁夏回族自治区',
     '新疆维吾尔自治区',
     '台灣',
     '香港特别行政区',
     '澳门特别行政区'
];

var __key = '9a33d4f370d8b996bcff0a988071ac2e';
var __url = 'http://restapi.amap.com/v3/config/district?subdistrict=3&extensions=all&level=province&key=$key&s=rsv3&output=json&keywords=$province';
var __referer = 'http://www.wzq.info';
var __file = './gd_data.json';
var __saveToDbUrl = 'http://localhost:8001/api/v2/district/gddata';
// var __saveToDbUrl = 'http://localhost:8001/api/v1/district/batch';

function __createOption(province) {
    var url = __url.replace('$key', __key);
    url = url.replace('$province', encodeURIComponent(province));
    var option = {
        referer: __referer,
        url: url
    };

    // console.log(url);
    return option;
}

/**
 cb(err,body)
 */
function __oneProvince(province, cb) {
    console.log('get data :' + province);
    var option = __createOption(province);
    request(option, function (err, res, body) {
        if (err) {
            console.log('####get data fail:' + province);
        } else {
            console.log('----get data succ:' + province);
        }
        if (cb) cb(err, body);
        else console.log(body);
    });
}


// __oneProvince(provinceList[0], function(err, body) {
// 	fs.writeFile(__file, body, function(err) {
// 		if (err) console.log(err);
// 	})
// });


function __saveOne(obj, cb) {
    request({
        method: 'POST',
        url: __saveToDbUrl,
        json: true,
        headers: {"content-type": "application/json"},
        body: obj
    }, function (err, res, body) {
        if (err) {
            console.log('#### __saveOne err', err, obj);
        } else {
            // console.log('---saveOne succ');
        }
        if (cb) cb(err, body);
        else console.log('__saveOne', err, body)
    });
}

/**
 cb(err)
 */
function __allProvince(cb) {
    var obj;

    function foo(err, body) {
        if (body) {
            var tmp = JSON.parse(body);
            tmp = tmp.districts;
            if (tmp.polyline) {
                delete tmp.polyline;
            }

            __saveOne(tmp, function (err) {
                bar();
            });
        } else {
            bar();
        }
    }

    function bar() {
        if (provinceList.length === 0) return cb(null);
        obj = provinceList.shift();
        console.log('----start province' + obj);
        __oneProvince(obj, foo);
    }

    foo();
}


__allProvince(function (err) {
    console.log('done');
});